package com.wg.net.session;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * 会话抽象基类（实现ISession通用逻辑）
 * <p>
 * 核心功能：
 * - 自动生成自增连接ID（线程安全）
 * - 提供基础字段存储（如connectionId）
 *
 * @author 少爷123
 */
public abstract class AbstractSession implements ISession {

    /**
     * 自增连接ID生成器（线程安全）
     */
    private static final AtomicInteger CONNECTION_ID_GENERATOR = new AtomicInteger(1);

    /**
     * 连接ID（自增，应用生命周期内唯一）
     */
    private final long connectionId;

    /**
     * 构造抽象会话（初始化连接ID）
     */
    protected AbstractSession() {
        this.connectionId = CONNECTION_ID_GENERATOR.getAndIncrement();
    }

    @Override
    public long getConnectionId() {
        return connectionId;
    }
}
